/*
 * Copyright (c) 2013, SRI International
 * All rights reserved.
 * Licensed under the The BSD 3-Clause License;
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 * 
 * http://opensource.org/licenses/BSD-3-Clause
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * Neither the name of the aic-web-praise nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package com.sri.ai.lpitools.cobra.gwtutil.dataobjects.shared;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
 * This class exists to be serialized into JSON, it represents a node.
 * @author dabraham
 *
 */
public class TreeNode implements IsSerializable{
	public enum TreeType {
		JUSTIFICATION, TRACE;
		};
	
	public enum NodeType
	{
		TERMINAL, ARGUMENT, FUNCTOR, SYMBOL, INARGUMENT, INFUNCTOR, STRING;
	};
	
	private String ID, Label;
	private TreeType type;
	private String color;
	private boolean leaf;
	public TreeNode(){};
	/**
	 * Constructor.
	 * @param ID The node's ID.
	 * @param Label The node's label (Display Text).
	 * @param type The node's type: Either Justification or Trace
	 * @param color The node's data type, determines the coloring.
	 * @param leaf True if the node is a leaf, otherwise false.
	 */
	public TreeNode(String ID, String Label,TreeType type, NodeType color, boolean leaf)
	{
		this.ID = ID;
		this.Label = Label;
		this.type = type;
		this.leaf = leaf;
		if(color == null)
		{
			this.color = "OTHER";
		}
		else
		{
			this.color = color.toString();
		}
	}
	
	//Getters and Setters
	
	public String getID() {
		return ID;
	}
	public void setID(String iD) {
		ID = iD;
	}
	public String getLabel() {
		return Label;
	}
	public void setLabel(String label) {
		Label = label;
	}
	public TreeType getType() {
		return type;
	}
	public void setType(TreeType type) {
		this.type = type;
	}
	public String getColor() {
		return color;
	}
	public void setColor(NodeType color) {
		if(color == null)
		{
			this.color = "OTHER";
		}
		else
		{
			this.color = color.toString();
		}
	}
	public boolean isLeaf() {
		return leaf;
	}
	public void setLeaf(boolean leaf) {
		this.leaf = leaf;
	}
}
